package com.osilon.updater;

import java.util.HashMap;
import java.util.Map;

import com.osilon.asm.OsilonClassNode;
import com.osilon.updater.tasks.ChatTask;
import com.osilon.updater.tasks.InitTask;
import com.osilon.updater.tasks.ItemTask;
import com.osilon.updater.tasks.PropertiesTask;
import com.osilon.updater.tasks.SearchTask;
import com.osilon.updater.tasks.Task;
import com.osilon.util.ClassCache;

public class Updater {
	private static Map<String, Object> infoMap = new HashMap<String, Object>();
	private static ClassCache cache;
	private Task[] accessors = new Task[] { new SearchTask(), new InitTask(), new PropertiesTask(), new ChatTask(), new ItemTask() };
	
	public Updater(ClassCache cache) {
		this.cache = cache;
	}
	
	public void update() {
		for(OsilonClassNode mcn : cache.getClasses()) {
			for(Task a : accessors) {
				if(a.canProcess(mcn)) {
					a.process(cache, mcn);
				}
			}
		}
	}
	
	public static ClassCache getClassCache() {
		return cache;
	}
	
	public static Map<String, Object> getInfoMap() {
		return infoMap;
	}
}
